
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include "builtins.h"
#include "vec_decl.h"
#include "vec_impl.h"

// 声明vector类型
DECL_VEC(int);
DECL_VEC(ctl_vec_int);

// 实现vector类型
IMPL_VEC(int);
IMPL_VEC(ctl_vec_int);

int main() {
    ctl_vec_ctl_vec_int matrix;
    ctl_vec_ctl_vec_int_ctor(&matrix);

    ctl_vec_int row;
    ctl_vec_int_ctor(&row);
    ctl_vec_int_push_back(&row, 1);
    ctl_vec_int_push_back(&row, 2);
    ctl_vec_ctl_vec_int_push_back(&matrix, row);

    // 初始化 first_row 避免问题
    ctl_vec_int first_row;
    ctl_vec_int_ctor(&first_row); // 初始化 first_row
    
    // 获取行数据
    ctl_vec_ctl_vec_int_get_at(&matrix, 0, &first_row);
    
    int value;
    ctl_vec_int_get_at(&first_row, 1, &value);
    printf("Value: %d\n", value); // 应该输出 2

    // 释放资源
    ctl_vec_int_dtor(&first_row);
    ctl_vec_int_dtor(&row);
    ctl_vec_ctl_vec_int_dtor(&matrix);
    return 0;
}